//! 负责一些公用工具函数
//! 
//! DTO的公共工具函数包括数据哈希, Mock 数据生成等

use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};

/// 简易哈希值生成 trait
/// 
/// 提供快速生成哈希值的能力，适用于需要快速计算哈希的场景
pub trait QuickHashExt {
    /// 生成哈希值
    /// 
    /// # Returns
    /// 
    /// 返回一个 u64 类型的哈希值
    fn gen_hash(&self) -> u64;
}

/// 为 String 类型实现 QuickHash trait
impl QuickHashExt for String {
    fn gen_hash(&self) -> u64 {
        let mut hasher = DefaultHasher::new();
        self.hash(&mut hasher);
        hasher.finish()
    }
}

/// 为 Vec<u8> 类型实现 QuickHash trait
impl QuickHashExt for Vec<u8> {
    fn gen_hash(&self) -> u64 {
        let mut hasher = DefaultHasher::new();
        self.hash(&mut hasher);
        hasher.finish()
    }
}

/// 为 &str 类型实现 QuickHash trait（方便字符串字面量使用）
impl QuickHashExt for &str {
    fn gen_hash(&self) -> u64 {
        let mut hasher = DefaultHasher::new();
        self.hash(&mut hasher);
        hasher.finish()
    }
}

/// 为 &[u8] 类型实现 QuickHash trait（方便字节切片使用）
impl QuickHashExt for &[u8] {
    fn gen_hash(&self) -> u64 {
        let mut hasher = DefaultHasher::new();
        self.hash(&mut hasher);
        hasher.finish()
    }
}